//混入

//可以通过 mixin来修饰
mixin MixinA {
  String name = 'A';
  void printA() {
    print('this is A');
  }
}

class Person{

}

//也可以用 class作为混入

//作为混入使用的类 不能继承自其他类, 只能继承自Object
// class MixinB extends Person{
class MixinB extends Object {
  // 作为混入的类 不能有构造函数, 如果有构造函数, 下面 通过with 引入的类会报错
  // MixinB();

  String name = 'B';
  void printB() {
    print('This is B');
  }
}

class Man with MixinA, MixinB {}

void main(List<String> args) {
  var m = Man();
  m.printA();
  m.printB();

  //引用多个混入时, 默认使用最后引入的一个, 前面的被覆盖
  print(m.name);
}
